# 项目主要作用就是将图片转化字画符
from PIL import Image

WIDTH = 60  # 字符画的宽
HEIGHT = 45  # 字符画的高
# 填充字符
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

# 将256灰度映射到70个字符上，也就是RGB值转字符的函数：
def get_char(r, g, b, alpha=256):  # alpha透明度
   if alpha == 0:
       return ' '
   length = len(ascii_char)
   gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)  # 计算灰度
   unit = (256.0 + 1) / length
   return ascii_char[int(gray / unit)]  # 不同的灰度对应着不同的字符
   # 通过灰度来区分色块


if __name__ == '__main__':
    imagePath = "/Users/xuyihang/Downloads/fdb127dcbbb370a6f286aa0ffab9a54a.jpeg";
    print(type(imagePath))

    image = Image.open( imagePath )

    print( image.size )

    image = image.resize((WIDTH,HEIGHT),Image.NEAREST);

    txt = ""
    for i in range( HEIGHT ):
        for j in range( WIDTH ):
            txt += get_char( *image.getpixel( (j, i) ) )  # 获得相应的字符
        txt += '\n'
    print( txt )  # 打印出字符画
    # 将字符画 写入文件中
    with open( "/Users/xuyihang/Downloads/output.txt", 'w' ) as f:
        f.write( txt )
